Conventionally, for example, error correction codes are used to correct errors of read data from a nonvolatile semiconductor such as a NAND memory. As is known, an LDPC (Low Density Parity Check) code as one type of the error correction code has a high error correction performance. Also, as is known, the LDPC code can improve a decoding performance in proportion to a code length. For example, a code length adopted in a NAND flash memory is about 10 kbit order.